<?php 
class ImagesManagementComponent extends Object
{
    var $controller = true;
 
	/**
	 * Function which resize an image and change the destination if needed.
	 *
	 * @return array
	 * @author Kévin Labesse
	 **/
	function resize_img($dir, $dirdest, $img, $new_name, $u_width, $u_height) {
		// Récupération de l'extension
		list($nom, $ext) = explode(".", $img);
		// Chargement de l'image d'origine
		$my_image = @imagecreatefromjpeg($dir.$img);
		if (!$my_image) return array('result' => false, 'err' => 1, 'error' => "Impossible de charger l'image d'origine.");
		
		// Récupération des dimensions de l'image d'origine
		$width = imagesx($my_image);
		$height = imagesy($my_image);
		
		// Calcul des nouvelles dimensions
		if ($u_width == 0 && $u_height == 0) return array('result' => false, 'err' => 2, 'error' => "Vous devez spécifier au moins une dimension.");
		if ($u_width == 0) $new_width = $u_height / $height * $width;
		else $new_width = $u_width;
		if ($u_height == 0) $new_height = $u_width / $width * $height;
		else $new_height = $u_height;
		
		// Création d'une image vide avec les nouvelles dimensions
		$thumb = @imagecreatetruecolor($new_width, $new_height);
		if (!$thumb) return array('result' => false, 'err' => 3, 'error' => "Impossible de créer la nouvelle image.");
	
		// Copie de l'image d'origine redimensionnée avec les nouvelles dimensions
		$sample = @imagecopyresampled($thumb, $my_image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
		if (!$sample) return array('result' => false, 'err' => 4, 'error' => "Impossible de charger la nouvelle image.");
	
		// Enregistrement du fichier
		$img_name = $new_name;
		/*$i = 0;
		while (file_exists($dirdest.$img_name.".".$ext)) {
			$i++;
			$img_name = $new_name."_".$i;
		}*/
		$save = @imagejpeg($thumb, $dirdest.$img_name.".".$ext);
		if (!$save) return array('result' => false, 'err' => 5, 'error' => "Impossible d'enregistrer la nouvelle image.");
		
		
		// Destruction de l'image d'origine (pas physiquement)
		$destruction = @imagedestroy($my_image);
		if (!$destruction) return array('result' => false, 'err' => 6, 'error' => "Le cache n'a pu être vidé.");
		
		return array('result' => true, 'name' => $img_name.".".$ext);
	}
}

?>